package Modelo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;



public class VendedorModelo  {
        ConexionModelo conexion=new ConexionModelo();
	private transient Connection con;
	ResultSet rs;

    

//linkedlist clase de java para generar listas
//preparedstatement permite prepara el estado recibir la informacion de la base de datos
//rsultset el resultado
 public LinkedList consultaVendedorTabla(String consulta,int tipo)throws SQLException{
   if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

	LinkedList listaVend=new LinkedList();
	PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            if (consulta.equals(""))
  		pstmt=con.prepareStatement("select * from Vendedor");
            else
                if (tipo==1)
                    pstmt=con.prepareStatement("select * from Vendedor where cedula like '%"+ consulta + "%'");//probando
                else if(tipo == 2)
                    pstmt=con.prepareStatement("select * from Vendedor where zona like '%"+ consulta + "%'");//probando
                else
                    pstmt=con.prepareStatement("select * from Vendedor where nombre like '%"+ consulta + "%'");//probando

  		rs=pstmt.executeQuery();
  		while(rs.next()){
  			listaVend.add(Vendedor.load(rs));
  		}

  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}

	return listaVend;
 }

 public void setNuevoVendedor(Vendedor vend) throws SQLException {// insertar datos a la base de datos
     if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }


        PreparedStatement pstmt=null;
        try{

                pstmt=con.prepareStatement("insert into vendedor values(?,?,?,?,?,?,?,?)");
                pstmt.setString(1,  vend.getCodigo());
                pstmt.setString(2,  vend.getCedula());
                pstmt.setString(3,  vend.getNombre());
		pstmt.setString(4,  vend.getApellido());
                pstmt.setString(5,  vend.getDireccion());
                pstmt.setString(6,  vend.getTelefono());
                pstmt.setString(7,  vend.getCodigoSucursal());
                pstmt.setBoolean(8,  vend.getEstado());
		pstmt.executeUpdate();

        }finally{
               if( pstmt!=null )
                  pstmt.close();
        }
    }

 //actualizar donde consulta cedula o codigo y dato es el valor a cambiar
  public void actualizarVendedor(Vendedor vend,String consulta) throws SQLException {// insertar datos a la base de datos
      if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        PreparedStatement pstmt=null;
        try{
                pstmt=con.prepareStatement("update vendedor set "
                        + "codigo='" + vend.getCodigo()+ "',"
                        + "cedula='" + vend.getCedula() + "',"
                        + "nombre='" + vend.getNombre() + "',"
                        + "apellido='" + vend.getApellido() + "',"
                        + "direccion='" + vend.getDireccion()+ "',"
                        + "telefono='" + vend.getTelefono() + "', "
                        + "estado='" +  vend.getEstado() + "'"
                        + " where cedula='" + consulta +"'");
		pstmt.executeUpdate();

        }finally{
               if( pstmt!=null )
                  pstmt.close();
        }
        conexion.disconnect();
    }
 
  
   /**
  * Metodo que devuelve un objeto de tipo Vendedor
  * @param codigo
  * @throws SQLException
  */
  public Vendedor consultaVendedorCodigo(String consulta) throws SQLException{
      if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

      Vendedor vendedor=new Vendedor();

      PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            pstmt=con.prepareStatement("select * from Vendedor where codigo='"+ consulta + "'");//probando
            rs=pstmt.executeQuery();

            while(rs.next()){
                vendedor=Vendedor.load(rs);
            }
  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}
        conexion.disconnect();
        return vendedor;
  }

}
